<?php
if (!defined('MINI_RUN')) exit();
define('TEMP_RUN',true);

require MINI_PATH.'admin/file.php';
require MINI_PATH.'admin/core/template.php';
if (!class_exists('Mini_Page'))
	require_once MINI_PATH.'admin/core/Mini_Page.class.php';
if (!class_exists('Mini_Var'))
	require_once MINI_PATH.'admin/core/Mini_Var.class.php';

	//$updateClassHomeSwitch不等于no,就生成首页及对应栏目首页
if (strcasecmp($updateClassHomeSwitch,'no')){
	/**************************************
	 * 生成网站首页 
	 **************************************/
	$miniHtml = Mini::getMiniHome();
	$miniHtml = decodeMiniVar($miniHtml);
	$miniHtml = decodeMiniTag($miniHtml, 0);
	$miniHtml = replaceMiniScope($miniHtml);
	
	createFile(MINI_PATH.'index.html', $miniHtml);
	echo '更新网站首页成功！<br /><br />';
	unset($miniHtml);
	
	/**************************************
	 * 生成栏目首页 
	 **************************************/
	$updateClassHomeSwitch = intval($updateClassHomeSwitch);
	$classHomeArray = getClassHomeArrayById($updateClassHomeSwitch);	//加载对应栏目或所有栏目数据
	foreach ($classHomeArray as $classHome){
		$classTemp = getClassTemplateTextById($classHome['classtempid']);
		if (empty(trim($classTemp)))	//数据为空，不生成文件
			continue;
		$classTemp = decodeMiniVar($classTemp);
		$classTemp = decodeMiniTag($classTemp, $classHome['classid']);
		//替换栏目模板中的标签	
		$classTemp = replaceClassScope($classTemp, $classHome);		
				
		createFile(MINI_PATH.Mini::getClassPath($classHome['classid']).'/index.html', $classTemp);		
		echo '更新栏目  '.$classHome['classname'].'首页成功！<br /><br />';
	}
	//清除相关不再使用的变量数据
	unset($classHomeArray);
	unset($classHome);
	unset($classTemp);
}
unset($updateClassHomeSwitch);

//$updateClassPageSwitch如果不等于yes，则不更新文章页面，直接退出
if (strcasecmp($updateClassPageSwitch, 'yes'))
	exit();
unset($updateClassPageSwitch);
	
//检测是否有需要更新的栏目
if (!$classIdArray = getNeedUpdateClassIdArray()){
	//检测是否有需要更新的文章
	if (!$pageIdArray = getNeedUpdatePageIdArray(0)){
		echo '没有需要更新的文章数据！';
		return ;
	}
}
unset($pageIdArray);

/**************************************
 * 生成文章页面 
 **************************************/
	
//更新所有IsUpdate为1的栏目的文章
foreach ($classIdArray as $class){	
	$theClass = getClassDataForPage($class['classid']);	//获取栏目文章模板数据
	echo '更新栏目：'.$theClass['classname'].'......<br />';
	$pageTempText = getPageTemplateTextById($theClass['pagetempid']);
	if (empty($pageTempText)){
		//如果文章模板内容为空则跳入下一个栏目
		echo '更新栏目  ：'.$theClass['classname'].' 完毕~！<br /><br />';
		Mini::setIsUpdate($theClass['classid'], 0, 0);
		continue;
	}
	$pageTempText = decodeMiniVar($pageTempText);
	$pageTempText = decodeMiniTag($pageTempText, $theClass['classid']);
	//替换文章中栏目级标签
	$pageTempText = relaceClassVar($pageTempText, $theClass);
	
	/*****************************
	 * 循环生成文章文件
	 ****************************/
	$startSize = 0;
	$offset = 10;	//每次循环生成10个页面
	while ($offset > 0){
		//分批获取当前栏目的文章实体对象数组
		$pageObjArray = getPageObjArray($classid['classid'], $startSize, $offset);		
		if (count($pageObjArray) < $offset)			
			$offset = -1;	//数据不足10条，不再取下一批数据
		foreach ($pageObjArray as $pageObj){			
			pageFactory($pageTemp,$mini, $mini_temp, $miniVar, $class_temp, $theClass, $page_temp, $pageObj, $classpath);
		}
		$startSize += $offset;
	}
	Mini::setIsUpdate($classid['classid'], 0, 0);
	echo '更新栏目  ：'.$theClass['classname'].' 完毕~！<br /><br />';
}

//获取所有IsUpdate为0但有需要更新的文章的栏目Id
$otheridArray = loadOtherIdArray();

//更新所有IsUpdate为0的栏目的文章
foreach ($otheridArray as $classid){
	//获取栏目文章模板数据
	$theClass = loadMyClass($classid['classid']);
	echo '更新栏目：'.$theClass['classname'].'......<br />';
	//如果文章模板内容为空则跳入下一个栏目	
	if (!$theClass['pagetemp']){
		setIsUpdate($theClass['classid'], 0, 0);
		echo '更新栏目  ：'.$theClass['classname'].' 完毕~！<br /><br />';
		continue;
	}
	$classpath = getClassPath($classid['classid']);
	//装载栏目文章模板	
	$pageTemp=replacePageTempVar($mini_temp, $mini, $miniVar, $class_temp, $theClass,$classpath);	
	$startSize=0;
	$pageSize=10;	
	while ($pageSize>0){
		//分批获取当前栏目的文章实体对象数组
		$pageObjArray=loadOtherPageObjArray($classid['classid'], $startSize, $pageSize);		
		if (count($pageObjArray)<$pageSize)
			$pageSize=-1;
		foreach ($pageObjArray as $pageObj){
			processPage($pageTempText, $pageObj);			
		}
		$startSize+=$pageSize;
	}
	setIsUpdate($classid['classid'], 0, 0);
	echo '更新栏目  ：'.$theClass['classname'].' 完毕~！<br /><br />';
}
return ;

/****************************************************
 * 执行程序结束，下面是函数声明
 ***************************************************/
/**
 * 获取需要更新的栏目的ID数组
 */
function getNeedUpdateClassIdArray(){
	$pdo = new MySQLPDO();
	return $pdo->selectSQL('SELECT ClassId FROM Mini_Class WHERE IsUpdate=1');	
}
/**
 * 获取对应栏目中需要更新的文章的ID数组
 * @param int $classId (0为全部栏目)
 */
function getNeedUpdatePageIdArray($classId){
	$pdo = new MySQLPDO();
	$select = 'SELECT PageId FROM Mini_Page WHERE IsUpdate=1 ';	
	if ($classId)
		$select .= 'AND ClassId='.$classId;
	return $pdo->selectSQL($select);	
}

/**
 * 根据栏目ID获取文章需要的栏目数据<br/>
 * 字段ClassId,ClassName,ParentId,PageTempId,ClassCss,ClassJs<br/>
 * 已构建静态缓存
 * @param int $classId
 */
function getClassDataForPage($classId){
	static $staticClassArray = array();
	if (!isset($staticClassArray[$classId])){
		//如果没有缓存数据，读取数据库
		$pdo = new MySQLPDO();
		$select = 'SELECT ClassId,ClassName,ParentId,PageTempId,ClassCss,ClassJs FROM Mini_Class WHERE ClassId=? limit 1';
		$classArray = $pdo->selectSQL($select, array($classId));
		if (empty($classArray)){
			die('没有栏目ID ：'.$classId.'！');
		}
		$staticClassArray[$classId] = $classArray[0];	
	}	
	return $staticClassArray[$classId];
}

/**
 * 获取对应栏目ID的文章对象数组<br/>
 * 每次取索引为第$startSize ~ ($startSize + $offset)的数据
 * @param $classId
 * @param $startSize
 * @param $offset
 */
function getPageObjArray($classId,$startSize, $offset){
	$pdo = new MySQLPDO();
	$sql = 'SELECT * FROM Mini_Page WHERE ClassId=? limit '.$startSize.','.$offset;
	return $pdo->getObjectArray($sql, array($classId),'Mini_Page');	
}

function loadOtherIdArray(){
	$pdo=new MySQLPDO();
	$select='SELECT c.ClassId FROM Mini_Class c WHERE Exists (SELECT \'OK\' FROM Mini_Page p WHERE p.ClassId=c.ClassId AND p.IsUpdate=1)';
	$idArray=$pdo->selectSQL($select);
	return $idArray;
}
function loadOtherPageObjArray($classid,$startSize,$pageSize){
	$pdo=new MySQLPDO();
	return $pdo->getObjectArray('SELECT * FROM Mini_Page WHERE ClassId='.$classid.' AND IsUpdate=1 limit '.$startSize.','.$pageSize, null,'Mini_Page');	
}

/**
 * 获取栏目表数据
 * @param int $classId 为0则取所有栏目
 */
function getClassHomeArrayById($classId){
	$classId = intval($classId);
	$pdo = new MySQLPDO();
	$select = 'SELECT ClassId,ClassName,ParentId,ClassTempId,ClassKey,ClassDesc,ClassCss,ClassJs,SmallText,ClassText FROM Mini_Class';
	if ($classId)
		$select .=' WHERE ClassId='.$classId;
	return $pdo->selectSQL($select);	
}

/**
 * 通过classTempId获取TempText<br/>
 * 已构建静态缓存数组
 * @param $tempId
 */
function getClassTemplateTextById($classTempId){
	static $staticClassTextArray = array();	//静态缓存数组
	if (!isset($staticClassTextArray[$classTempId])){
		//没有缓存数据时，读取数据
		$staticClassTextArray[$classTempId] = Mini::getTempText('Mini_ClassTemp', $classTempId);
	}	
	return $staticClassTextArray[$classTempId];			
}

/**
 * 通过pageTempId获取TempText<br/>
 * 已构建静态缓存数组
 * @param $tempId
 */
function getPageTemplateTextById($pageTempId){
	static $staticPageTextArray = array();
	if (!isset($staticPageTextArray[$pageTempId])){
		$staticPageTextArray[$pageTempId] = Mini::getTempText('Mini_PageTemp', $pageTempId);
	}
	return $staticPageTextArray[$pageTempId];		
}
/**
 * 替换$text中Mini作用域的标签<br/>
 * 包括NAME、URL
 * @param string $text
 */
function replaceMiniScope($text){
	$text = str_replace(MiniTag::NAME, Mini::NAME, $text);
	$text = str_replace(MiniTag::URL, Mini::URL, $text);
	return $text;
}

/**
 * 替换栏目模板中栏目作用域的标签<br/>
 * 包括ID、NAME、BID、KEY、DESC、CSS、JS、SMALLTEXT、URL、TEXT
 * @param string $text
 * @param array $classHome 栏目内容数组(关联索引必须是栏目表字段名称)
 */
function replaceClassScope($text,$classHome){
	$text = str_replace(ClassTag::ID, $classHome['classid'], $text);
	$text = str_replace(ClassTag::NAME, $classHome['classname'], $text);		
	$text = str_replace(ClassTag::BID, $classHome['parentid'], $text);
	$text = str_replace(ClassTag::KEY, $classHome['classkey'], $text);
	$text = str_replace(ClassTag::DESC, $classHome['classdesc'], $text);
	$text = str_replace(ClassTag::CSS, $classHome['classcss'], $text);
	$text = str_replace(ClassTag::JS, $classHome['classjs'], $text);
	$text = str_replace(ClassTag::SMALLTEXT, $classHome['smalltext'], $text);		
	$text = str_replace(ClassTag::URL, Mini::URL.Mini::getClassPath($classHome['classid']), $text);
	$text = str_replace(ClassTag::TEXT, $classHome['classtext'], $text);
	$text = replaceMiniScope($text);	//替换Mini全局标签
	return $text;
}
/**
 * 替换文章模板中栏目作用域的标签<br/>
 * 包括ID、NAME、URL、BID、CSS、JS
 * @param string $text
 * @param array $class
 */
function relaceClassVar($text, $class){
	$text = str_replace(ClassTag::ID, $class['classid'], $text);
	$text = str_replace(ClassTag::NAME, $class['classname'], $text);
	$text = str_replace(ClassTag::URL, Mini::getClassPath($class['classid']), $text);
	$text = str_replace(ClassTag::BID, $class['parentid'], $text);
	$text = str_replace(ClassTag::CSS, $class['classcss'], $text);
	$text = str_replace(ClassTag::JS, $class['classjs'], $text);
	return $text;	
}

function processPage($pageText, $pageObj){
	$pageObj = new Mini_Page();
	$pageText = str_replace(PageTag::ID, $pageObj->pageid, $pageText);
	$pageText = str_replace(PageTag::TITLE, $pageObj->title, $pageText);
	$pageText = str_replace(PageTag::KEY, $pageObj->pagekey, $pageText);
	$pageText = str_replace(PageTag::DESC, $pageObj->pagedesc, $pageText);
	$pageText = str_replace(PageTag::SOURCE, $pageObj->source, $pageText);
	$pageText = str_replace(PageTag::AUTHOR, $pageObj->author, $pageText);
	$pageText = str_replace(PageTag::USERNAME, $pageObj->userid, $pageText);
	$pageText = str_replace(PageTag::PUBTIME, $pageObj->pubtime, $pageText);
	$pageText = str_replace(PageTag::CLICK, $pageObj->click, $pageText);
	$pageText = str_replace(PageTag::SMALLTEXT, $pageObj->smalltext, $pageText);
	$pageText = str_replace(PageTag::TEXT, $pageObj->pagetext, $pageText);
	$pageText = str_replace(PageTag::GOOD, $pageObj->good, $pageText);
	$pageText = str_replace(PageTag::BAD, $pageObj->bad, $pageText);
	$pageText = str_replace(PageTag::SCORE, $pageObj->score, $pageText);
	$pageText = str_replace(PageTag::SCORENUM, $pageObj->scorenum, $pageText);
	$pageText = str_replace(PageTag::URL, Mini::generateURL(Mini::getClassPath($pageObj->classid), $pageObj->filename), $pageText);
	$pageText = str_replace(PageTag::MODIFYTIME, $pageObj->modifytime, $pageText);
	return $pageText;
}
function replacePageTempVar($mini_temp,$mini,$miniVar,$class_temp,$theClass,$classpath){
	$text=str_replace($mini_temp['header'],$miniVar->header,$theClass['pagetemp']);
	$text=str_replace($mini_temp['footer'],$miniVar->footer,$text);
	$text=str_replace($class_temp['pageleft'],$theClass['pageleft'],$text);
	$text=str_replace($class_temp['pageright'],$theClass['pageright'],$text);
	$text=str_replace($class_temp['header'],$theClass['header'],$text);
	$text=str_replace($class_temp['footer'],$theClass['footer'],$text);	
	$text=str_replace($class_temp['name'],$theClass['classname'],$text);
	$text=str_replace($class_temp['path'],$mini['url'].$classpath,$text);
//	$text=str_replace($class_temp['bid'],$theClass['parentclass'],$text);
	$text=str_replace($class_temp['id'],$theClass['classid'],$text);
	$text=str_replace($mini_temp['name'],$mini['name'], $text);
	$text=str_replace($mini_temp['url'],$mini['url'], $text);
	return $text;		
}
function replacePageVar($text,$mini,$page_temp,$pageObj,$classpath){	
	//Content										
	$text=str_replace($page_temp['smalltext'], $pageObj->smalltext, $text);		
	$text=str_replace($page_temp['desc'], $pageObj->desc, $text);
	$text=str_replace($page_temp['keyword'], $pageObj->keyword, $text);			
//	$text=str_replace($page_temp['title'], $pageObj->title, $text);
	$text=str_replace($page_temp['source'], $pageObj->source, $text);
	$text=str_replace($page_temp['author'], $pageObj->author, $text);
	$text=str_replace($page_temp['pubtime'], $pageObj->pubtime, $text);
	$text=str_replace($page_temp['click'], $pageObj->click, $text);
//  $text=str_replace($page_temp['allscore'], $pageObj->allscore, $text);
//  $text=str_replace($page_temp['scorenum'], $pageObj->scorenum, $text);
//	$text=str_replace($page_temp['clear'], $pageObj->clear, $text);
//	$text=str_replace($page_temp['unclear'], $pageObj->unclear, $text);
//	$text=str_replace($page_temp['username'], $pageObj->username, $text);
	$text=str_replace($page_temp['mofifytime'], $pageObj->modifytime, $text);
	$text=str_replace($page_temp['url'], $mini['url'].$classpath.$pageObj->filename.'.html', $text);
	$text=str_replace($page_temp['id'], $pageObj->pageid, $text);
	return $text;			
}

function pageFactory($pageTemp,$mini,$mini_temp,$miniVar,$class_temp,$theClass,$page_temp,$pageObj,$classpath){
	//装载文章零件数据
	$pageHTML=replacePageVar($pageTemp,$mini, $page_temp, $pageObj,$classpath);			
	$pageContentArray=explode($mini_temp['fenye'], $pageObj->content);
	$count=count($pageContentArray);
	$pagepath=$classpath.$pageObj->filename;
	if ($count<2){
		//装载文章核心数据
		unset($pageContentArray);
		$pageHTML=str_replace($page_temp['content'], $pageObj->content, $pageHTML);
		$pageHTML=str_replace($page_temp['fenye'], '', $pageHTML);
		$pageHTML=str_replace($page_temp['title'], $pageObj->title, $pageHTML);
		createFile(MINI_PATH.$pagepath.'.html', $pageHTML);
		setIsUpdate(0,$pageObj->pageid, 0);
		echo $pagepath.'.html 生成成功！<br />';
	}else{
		//装载分页文章核心数据				
		$urlArray=getFenYeUrlArray($pagepath, $count);
		for ($i=1;$i<=$count;$i++){
			$fenyepageHTML=str_replace($page_temp['content'],$pageContentArray[$i-1], $pageHTML);
			$fenyehtml=generateFenYe($urlArray, $pagepath, $i, $count);					
			$fenyepageHTML=str_replace($page_temp['fenye'], $fenyehtml, $fenyepageHTML);
			$fenyepageHTML=str_replace($page_temp['title'], $pageObj->title.'('.$i.')', $fenyepageHTML);
			if ($i==1){
				setIsUpdate(0, $pageObj->pageid, 0);
				createFile(MINI_PATH.$pagepath.'.html', $fenyepageHTML);
				echo $pagepath.'.html 生成成功！<br />';
			}
			else {
				createFile(MINI_PATH.$pagepath.'_'.$i.'.html', $fenyepageHTML);
				echo $pagepath.'_'.$i.'.html 生成成功！<br />';
			}
		}					
	}	
}
//获取分页的URL数组
function getFenYeUrlArray($pagepath,$count){
	$fenyeArray=array();	
	$fenyeArray[0]=generateUrl($pagepath, '第一页', '1');
	for ($i=2;$i<=$count;$i++){
		array_push($fenyeArray, generateUrl($pagepath.'_'.$i, '第'.$i.'页', $i));
	}
	return $fenyeArray;	
}
/**
 * 生成当前文章的分页内容
 * @param $urlArray
 * @param $pagepath
 * @param $i
 * @param $count
 */
function generateFenYe($urlArray,$pagepath,$i,$count){
	$fenyeStr='<div class="fenye">';
	//如果是第一页
	if ($i==1){	
		$fenyeStr.='<span>1</span>';			
		$size=$count<10?$count-1:9;
		$arr=array_slice($urlArray, 1,$size);
		$fenyeStr.=implode(' ', $arr);
		$fenyeStr.=generateUrl($pagepath.'_2', '下一页', '下一页');
	}else if($i==2){		
		$fenyeStr.=generateUrl($pagepath, '上一页', '上一页');		
		$fenyeStr.=$urlArray[0];
		$fenyeStr.='<span>2</span>';
		if ($i==$count)
			return $fenyeStr.'</div>';
		$size=$count<10?$count-2:8;		
		$arr=array_slice($urlArray,2,$size);
		$fenyeStr.=implode(' ', $arr);		
	}else if ($i==$count){
		$fenyeStr.=generateUrl($pagepath.'_'.$count-1, '上一页', $text);
		$size= $count<10 ? $count-1 : 9;
		$arr=array_slice($urlArray, -$size,$size);
		$fenyeStr.=implode(' ', $arr);
		$fenyeStr.='<span>'.$i.'</span>';
	}else{
		$fenyeStr.=generateUrl($pagepath.'_'.$i-1, '上一页', '上一页');
		$start=$count-$i>8?$i-3:($count-11>=0?$count-11:0);		
		$prearr=array_slice($urlArray, $start, $i-$start-1);
		$fenyeStr.=implode(' ', $prearr);
		$fenyeStr.='<span>'.$i.'</span>';		
		$nextarr=array_slice($urlArray, $i,$start+10-$i);
		$fenyeStr.=implode(' ', $nextarr);
	}
	return $fenyeStr.'</div>';
}
/**
 * 生成&lt;a /&gt;标签<br/>
 * target="_self"
 * @param string $pagepath	URL href属性
 * @param string $title		URL title属性
 * @param string $text		URL锚文本
 */
function generateUrl($pagepath,$title,$text){
	return '<a href="'.$pagepath.'.html" title="'.$title.'" target="_self">'.$text.'</a>';
}

/**
 * 解析模板内容中的所有全局变量标签，返回解析后的模板内容
 * @param string $text 模板内容
 * @return string $handled_text 解析后的内容
 */
function decodeMiniVar($text){
	$pattern = '/\[var\](.+?)\[\/var\]/';
	preg_match_all($pattern, $text, $matches);
	$varTagArray = $matches[0];	//所有匹配的内容数组，元素如[var]java[/var]
	$varNameArray = $matches[1];	//所有匹配的子组数组，元素如java
	if ($varNameArray){		//如果存在匹配内容
		$size = count($varNameArray);	//全局变量个数
		for ($i = 0; $i < $size; $i++){		//将文本中的变量标签循环替换成对应的值
			$text = str_replace($varTagArray[$i], getVarText($varNameArray[$i]), $text);
		}
	}
	return $text;
}
/**
 * 根据变量名获取全局变量模板内容<br/>
 * 构建缓存，如果缓存数组中存在，直接从缓存数组中取
 * @param string $varName
 */
function getVarText($varName){	
	static $varTemps = array();	// 存储全局变量模板数据的静态缓存数组 'varname'=>'textValue' 
	if (isset($varTemps[$varName]))	//如果缓存中有，直接取值返回
		return $varTemps[$varName];
	$pdo = new MysqlPDO();
	$varTextArr = $pdo->selectSQL('SELECT VarText FROM Mini_VarTemp WHERE VarName=? limit 1', array($varName));
	$varTemps[$varName] = isset($varTextArr[0]) ? $varTextArr[0]['vartext'] : '';	//存入缓存
	return $varTemps[$varName];		
}

/**
 * 解析当前栏目模板内容中的所有万能标签，返回解析后的内容
 * @param string $text 模板内容
 * @param string $currentClassId 当前栏目ID
 * @return string $handled_text 解析后的内容
 */
function decodeMiniTag($text, $currentClassId){
	$pattern = '/\[show\](.+?)\[\/show\]/';
	preg_match_all($pattern, $text, $matches);
	$showTagArray = $matches[0];	//所有匹配的内容数组，元素如[show]3,5,10,60,1[/show]
	$showNameArray = $matches[1];	//所有匹配的子组数组，元素如3,5,10,60,1
	if ($showNameArray){		//如果存在匹配内容
		$size = count($showNameArray);
		for ($i = 0; $i < $size; $i++){
			$text = str_replace($showTagArray[$i], getTagText($showNameArray[$i], $currentClassId), $text);
		}
	}
	return $text;	
}

/**
 * 根据标签内容获取解析后的循环文本<br/>
 * 栏目ID,模板标签ID,读取条数,标题最大字数,操作类型ID<br/>
 * 标题最大字数暂时不启用，无论输入多少，均不截取<br/>
 * 已构建静态缓存数组
 * @param string $tagName
 * @param int $currentClassId 当前栏目ID
 */
function getTagText($tagName, $currentClassId){
	static $tagTemps = array();	//存储万能标签数据的静态缓存数组 '1,1,10,60,1'=>'textValue'
	static $tagInfos = array();	//存储标签模板数据的静态缓存数组 1=>'textValue'
	if ($tagTemps[$tagName])	//如果已经缓存该标签数据，直接读取
		return $tagTemps[$tagName];
		
	$showTag = '[show]'.$tagName.'[/show]';	//原标签,便于解析错误直接返回原标签，不再解析	
	$numArray = explode(',', $tagName);	//将标签切割后的数字数组
	$size = count($numArray);
	if ($size != 5)		//如果切割后的数组大小不符合要求，返回原标签
		return $showTag;
	
	$tagId = $numArray[1];		//标签模板ID	
	if (isset($tagInfos[$tagId])){	//缓存数组中已存在，直接读取
		$tag = $tagInfos[$tagId];
	}else{
		$tagSQL = 'SELECT TempText FROM Mini_TagTemp WHERE TempId=? limit 1';
		$pdo = new MysqlPDO();
		$tagArray = $pdo->selectSQL($tagSQL, array($tagId));
		if (empty($tagArray[0]))	//如果没有对应标签模板，返回原标签
			return $showTag;
		$tag = $tagInfos[$tagId] = $tagArray[0]['temptext'];		
	}
	
	
		
	//如果栏目位为self，则栏目ID为当前栏目ID
	$classId = $numArray[0] == 'self' ? $currentClassId : $numArray[0];		
	/*
	PageId, ClassId, Title, PageKey, PageDesc, Source, Author, 
	UserId, PubTime, Click, SmallText, PageText, Good, Bad, Score,
	ScoreNum, FileName, ModifyTime, IsUpdate 
	*/	
	$pageSQL = 'SELECT PageId, p.ClassId, c.ClassName, c.ClassDir, Title, PageKey, PageDesc, Source, Author, PubTime, Click, SmallText, Good, Bad, Score, ScoreNum, FileName, ModifyTime FROM Mini_Page p , Mini_Class c' . ($classId ? ' WHERE ClassId=? ' : '');
	switch ($numArray[4]){
		case '1':	//最近更新
			$pageSQL .= ' ORDER BY PageId DESC';
			break;
		case '2':	//最近修改
			$pageSQL .= ' ORDER BY ModifyTime DESC';
			break;
		case '3':	//点击排行
			$pageSQL .= ' ORDER BY Click DESC';
			break;
		case '4':	//推荐排行
			$pageSQL .= ' ORDER BY Good DESC';
			break;	
		case '5':	//评分排行
			$pageSQL .= ' ORDER BY Score DESC';
			break;
	}
	$pageSQL .= ' limit '.$numArray[2];	//显示条数
	$pages = $pdo->selectSQL($pageSQL);	//查询对应文章数据
	if (empty($pages))	//如果没有对应文章数据，返回“暂无数据”
		return '当前暂无数据！';
	
	//有数据时，循环数据
	foreach ($pages as $page){
		$classURL = Mini::URL.$page['classdir'].'/';
		$text .= str_replace(PageTag::ID, $page['pageid'], $tag);
		$text .= str_replace(ClassTag::ID, $page['classid'], $tag);
		$text .= str_replace(ClassTag::NAME, $page['classname'], $tag);
		$text .= str_replace(ClassTag::URL, $classURL, $tag);
		$text .= str_replace(PageTag::TITLE, $page['title'], $tag);
		$text .= str_replace(PageTag::KEY, $page['pagekey'], $tag);
		$text .= str_replace(PageTag::DESC, $page['pagedesc'], $tag);
		$text .= str_replace(PageTag::SOURCE, $page['source'], $tag);
		$text .= str_replace(PageTag::AUTHOR, $page['author'], $tag);		
		$text .= str_replace(PageTag::PUBTIME, $page['pubtime'], $tag);
		$text .= str_replace(PageTag::CLICK, $page['click'], $tag);
		$text .= str_replace(PageTag::SMALLTEXT, $page['smalltext'], $tag);
		$text .= str_replace(PageTag::GOOD, $page['good'], $tag);
		$text .= str_replace(PageTag::BAD, $page['bad'], $tag);
		$text .= str_replace(PageTag::SCORE, $page['score'], $tag);
		$text .= str_replace(PageTag::SCORENUM, $page['scorenum'], $tag);
		$text .= str_replace(PageTag::URL, $classURL.$page['filename'].'.html', $tag);
		$text .= str_replace(PageTag::MODIFYTIME, $page['modifytime'], $tag);		
	}
	return $text;		
}
/**
 * 检测字符串是否为整数
 * @param string $v
 */
function checkIsNumber($v){
	return strcasecmp($v, (int)$v) == 0;	
}

?>